<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use DB;
use Session;

class ArticleController extends Controller
{

	
	// 文章 列表 默认待审核状态
	public function index( $status='2',$category_id='16',Request $request )
	{
        // 开始
        // 获取路由
        $route_array = request()->route()->getAction();
        $controller = explode("\\",$route_array['controller']);
        $result = explode("@",$controller[3]);
        // 控制器 	$result[0];
        // 方法 	$result[1];
        $auth_final = '';
        foreach( Session::get('auths') as $key=> $auth_info )
        {
            // 符合条件
            if( $auth_info['controller']==$result[0] && $auth_info['func']==$result[1] )
            {
                $auth_final = true;
                break;
            }else
            {
                $auth_final = false;
            }
        }
        // 权限验证失败
        if( !$auth_final )
        {
            return redirect('/')->with( ['authinfo'=>'没有此项权限'] );
        }
        // 结尾
		// 获取搜索内容
		$keyword = $request -> input('keyword',"");
		if( empty($keyword) )
		{
			// 为空 说明没有搜索
			$one = 'a.id';
			$two = '!=';
			$three = '0';
		}else{
			$one = 'a.title';
			$two = 'like';
			$three = '%'.$keyword.'%';
			
		}
		// 查询所有资讯 每页20条数据
		$articles = DB::table('article as a')
					-> select( 'a.id','a.title','a.create_at',DB::raw("case when a.status=1 then '草稿' when a.status=2 then '待审核' when a.status=3 then '审核通过'  when a.status=4 then '已推荐' when a.status=5 then '头条'  when a.status=6 then '未通过' end as statusInfo"),'a.status','u.name as author','c.name as cate_name' )
					-> leftJoin('user as u','u.id','=','a.user_id')
					-> leftJoin('category as c','c.id','=','a.category_id')
					-> where( $one,$two,$three ) 
					// 1草稿 2待审核 3审核通过 4推荐 5头条 6未通过
					-> where( 'a.status','=',$status )
					// 分类id
					-> where( 'a.category_id',$category_id )
					-> orderBy('a.create_at','desc')
					-> paginate(20);
		return view( 'article.list',[ 'articles'=>$articles,'request'=>$keyword,'status'=>$status ,'category_id'=>$category_id] );
	}
	
	
	// 执行 修改文章 状态
	public function upStatus( $article_id,Request $request )
	{
		// 包含状态
		$data = $request -> except('_token');
        $res  = DB::table('article')
					-> where('id',$article_id)
					-> update( $data );
		if($res)
		{
			// 修改成功
			$this -> show_msg('操作成功');
		}else
		{
			$this -> show_msg('操作失败');
		}
	}
	
	
	
	
	
	
	
	
	
	
	
	// 批量 操作 文章 审核通过
	public function passAll( Request $request )
	{
		// 包含 文章 id
		$data = $request -> except('_token');
		// 清除无效值
		unset($data['all'][0]);	
		// 1.主表
		$res = DB::table('article')
				-> whereIn( 'id',$data['all'] )
				// 3审核通过
				-> update( ['status'=>3] );
		if( !$res )
		{
			$this -> show_msg('操作失败');
		}
		$this -> show_msg('操作成功');
	
	}
	
	
	
	
	
	
	
	// 批量 删除 文章
	public function delAll( Request $request )
	{
		// 包含 文章 id
		$data = $request -> except('_token');
		// 清除无效值
		unset($data['all'][0]);		
		foreach( $data['all'] as $key=> $article_id )
		{
			$pics = DB::table('article_pic')
					-> where( 'article_id','=',$article_id )
					-> get();
			if( count($pics)>0 )
			{
				foreach( $pics as $key => $pic_info )
				{
					// 线上
					$file = "../../image".$pic_info -> pic_url;
					// 删除 文件
					if( file_exists($file) )
					{
						unlink($file);
					}
				}
				DB::table('article_pic')
					-> where( 'article_id','=',$article_id )
					-> delete();
			}
			
			
			
		}
		// 2.主表
		$res = DB::table('article')
				-> whereIn( 'id',$data['all'] )
				-> delete();
		if( !$res )
		{
			$this -> show_msg('删除失败');
		}
		$this -> show_msg('删除成功');
	
	}
	
	
	// 文章 预览
	public function preview( $article_id='' )
	{
        // 开始
        // 获取路由
        $route_array = request()->route()->getAction();
        $controller = explode("\\",$route_array['controller']);
        $result = explode("@",$controller[3]);
        // 控制器 	$result[0];
        // 方法 	$result[1];
        $auth_final = '';
        foreach( Session::get('auths') as $key=> $auth_info )
        {
            // 符合条件
            if( $auth_info['controller']==$result[0] && $auth_info['func']==$result[1] )
            {
                $auth_final = true;
                break;
            }else
            {
                $auth_final = false;
            }
        }
        // 权限验证失败
        if( !$auth_final )
        {
            return redirect('/')->with( ['authinfo'=>'没有此项权限'] );
        }
        // 结尾
		$article_info = DB::table('article')
						-> where('id', $article_id)
						-> first();
		// 线上 
		$article_info->content = str_replace('/images',config('app.imgPath').'/images',$article_info->content);
		
		return view( 'article.preview', [ 'article_info'=>$article_info,'title' => '文章预览' ] );
	
	}
	
	
	
	
	

	
}
